package com.generic;

/**
 * @author Vhong
 * @version 1.0
 */
public class Generic03 {
    public static void main(String[] args) {
        Person<String> stringPerson = new Person<String>("韩顺平");
        Person<Integer> integerPerson = new Person<Integer>(100);
        System.out.println(stringPerson.s);
        System.out.println(integerPerson.s);
        stringPerson.t();
        /*
            你可以这样理解，上面的Person类
            class Person<E>{
    //E表示s的数据类型，该数据类型在定义Person对象的时候指定
    // 即在编译期间，就确定E是什么类型
    String s;

    public Person(String s) {//E也可以是参数类型
        this.s = s;
    }

    public String f(){//返回类型使用E
        return s;
    }
}
         */
    }
}
//泛型的作用是:可以在类声明时通过一个标识表示类中某个属性的类型
//或者是某个方法的返回值的类型，或者是参数类型

class Person<E>{
    //E表示s的数据类型，该数据类型在定义Person对象的时候指定
    // 即在编译期间，就确定E是什么类型
    E s;

    public Person(E s) {//E也可以是参数类型
        this.s = s;
    }

    public E f(){//返回类型使用E
        return s;
    }
    public void t(){
        System.out.println(s.getClass());//显示s的运行类型
    }
}